package barbre;

import java.io.*;
public class Noeud implements Serializable {
	private int nbCles; //nombre de clés par noeud
	private boolean feuille;
	private Noeud [] tabFils; //tableau contenant les pointeurs sur les autres noeuds
	private Object [] tabCles; // tableau contenant les clés
	public Noeud(int t) {
		tabFils = new Noeud [2 * t]; //dimension du tableau de pointeurs
		tabCles = new Object [2 * t - 1]; //dimension du tableau de d'elements
		feuille = true; //le noeud est une feuille par défaut
		nbCles = 0;
	}
	//------------------------------ ACCESSEURS---------------------------------------------
	public boolean getFeuille() { //Pour savoir si le noeud est une feuille
		return feuille;
	}
	public int getNbCles() { //renvoi le nombre de Clés
		return nbCles;
	}
	public Object getTabCles(int pos) { //renvoi la cle située à la position pos du tableau de clés
		return tabCles[pos - 1];
	}
	public Noeud getTabFils (int pos) { //renvoi le noeud pointé par le pointeur en position pos
		return tabFils[pos - 1];
	}
	//----------------------------MODIFICATEURS---------------------------------------------------------------
	public void setFeuille(boolean valeur) { //pour changer ou nan le noeud en feuille
		feuille = valeur;
	}
	public void setNbCles(int nb) { //pour modifier le nombre de clés
		nbCles = nb;
	}
	public void setTabClesNull(int depart) {
		for (int i = depart; i < tabCles.length - 1; i++) {
			tabCles[i] = null;
		}
	}
	//--------------------------------------------------------------------------------------------------------
	public void insererTabCles(int pos, Object cle) { //Pour inserer une cles dans le tableau de cles a une position donnée
		// lever exception si bornes du tableau dépassées...
		tabCles[pos - 1] = cle;
	}
	public void insererTabFils(int pos, Noeud fils) { //pous inserer un fils a une position donnée
		tabFils[pos - 1] = fils;
	}
}
